/**
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 */
package com.jeesite.modules.sd.dao;

import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.sd.common.vo.DocUrge;
import com.jeesite.modules.sd.entity.DocDeliverRecord;
import com.jeesite.modules.sd.entity.ReturnFileInfo;
import com.jeesite.modules.sys.entity.Employee;
import com.jeesite.modules.sys.entity.Office;
import org.apache.ibatis.annotations.Param;
import org.apache.poi.ss.formula.functions.T;

import java.util.Date;
import java.util.List;

/**
 * 文件复制DAO接口
 * @author ysj
 * @version 2020-07-02
 */
@MyBatisDao
public interface DocDeliverRecordDao extends CrudDao<DocDeliverRecord> {

    /**
     * 通过原文id查询是否有拟办/分发记录
     * @param id
     * @return
     */
    int getRecordCountByDocIdAndType(@Param("docId") String id);

    /**
     * 修改领文记录
     * @param docDeliverRecord
     */
    void takeDocFile(DocDeliverRecord docDeliverRecord);

    /**
     * 拟办还文
     * @param docDeliverRecord
     */
    void returnDocFile(DocDeliverRecord docDeliverRecord);

    /**
     * 通过单位code查询待领取文件
     * @param officeCode
     * @return
     */
    List<DocDeliverRecord> selectWaitRecordByOfficeCode(@Param("officeCode") String officeCode);

    /**
     * 查询某个机构下所有人
     * @param officeCode
     * @return
     */
    List<Employee> searchUserByOffice(@Param("officeCode") String officeCode);
    /**
     * 领取时回显
     * @param id
     * @return
     */
     public List<DocDeliverRecord> getTakeFileInfor(String id);
    /**
     *通过信箱编码查询对应的单位编码
     * @param boxNumber
     * @return
     */
    String selectOfficeCodeByBoxNumber(@Param("boxNumber") String boxNumber);

    /**
     * 通过docId查询分发的单位信息
     * @param id
     * @return
     */
    List<Office> getSendUintByDocId(@Param("docId") String id);

    /**
     * 通过文件id查询最大分发编号
     * @param recvId 来文id
     * @return 最大分发编号
     */
    int findMaxCopyNoByRecvId(String recvId);

    /**
     * 通过秘书处单位类型查询秘书处单位Code
     * @param key
     * @return
     */
    String getSecretariatOfficeCode(@Param("key") String key);

    /**
     * 通过recordIDs获取还文信息
     * @param id
     * @return
     */
    List<ReturnFileInfo> getReturnFileInfoByRecordId(String[] id);

    /**
     * 来文角度 统计
     * @param lwStart
     * @param lwEnd
     * @param testUserCode
     * @param lwSecLvl
     * @param lwEmergLvl
     * @return
     */

    int rescStatistics(String lwStart, String lwEnd, String[] testUserCode, String lwSecLvl, String lwEmergLvl, String lengthCode);

    /**
     * 分发角度统计
     * @param fenStart
     * @param fenEnd
     * @param testUserCode
     * @param takeUser
     * @param returnUser
     * @param lengthCode
     * @return
     */

    int distribStatistics(String fenStart, String fenEnd, String[] testUserCode, String takeUser, String returnUser, String lengthCode);

    /**
     * 催领 催还统计
     * @param urgeStart
     * @param urgeEnd
     * @param recvCode
     * @return
     */
    DocUrge urgeTake(String urgeStart, String urgeEnd, String recvCode);

    /**
     * 销毁情况统计
     * @param destroyStart
     * @param destroyEnd
     * @return
     */
    int destoryStatistics(String destroyStart,String destroyEnd);
}